#ifndef PLAYLISTFUNCTIONFACTORY_H
#define PLAYLISTFUNCTIONFACTORY_H

#include <QObject>

class IF_MediaEngineInterface;
class IF_PictureEngineInterface;
class MediaListModel;
class AudioVideoAutomation;
class PictureAutomation;
class ActionListController;
class ApplicationSettings;
class Fader;
class QAction;

class PlaylistFunctionFactory : public QObject
{
public:
   explicit PlaylistFunctionFactory( QObject *parent = 0);

   MediaListModel *buildModel();
   IF_MediaEngineInterface *buildAudioVideoEngine();
   IF_PictureEngineInterface *buildPictureEngine();
   AudioVideoAutomation *buildAutomation( MediaListModel *model, IF_MediaEngineInterface *engine,
                                        ActionListController *controller, Fader *fader,
                                        ApplicationSettings & appSettings);
   PictureAutomation * buildPictureAutomation( MediaListModel *model,
                                               IF_PictureEngineInterface * engine,
                                               ActionListController *controller);
   QList<QAction *> buildActionList(IF_MediaEngineInterface *engine,
                                    AudioVideoAutomation *automation);
};

#endif // PLAYLISTFUNCTIONFACTORY_H
